home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- # $Header: /home/jerry/.bin/RCS/pickthis,v 1.6 92/08/10 10:56:17 jerry mh_contrib $
- ### pickthis - search messages (default: all) for one with same subject
- ### Usage: pickthis [+folder|@folder] [msgs to search]
- ##
- ## pickthis GRABS THE Subject: HEADER FROM THE CURRENT MESSAGE,
- ## STRIPS OFF ANY Re:, RE:, ETC. FROM THE FRONT OF THE SUBJECT,
- ## THEN SEARCHES FOR OTHER MESSAGES WITH THAT SUBJECT.
- ## IT STORES THE LIST OF MESSAGES IN THE SEQUENCE NAMED picked
- ## (SO YOU CAN USE THEM LATER); IT scanS THE SEQUENCE BEFORE IT QUITS.
- ##
- ## BY DEFAULT, pickthis SEARCHES ALL MESSAGES IN THE CURRENT FOLDER.
- ## IF YOU GIVE IT A LIST OF MESSAGES OR A FOLDER NAME, IT'LL SEARCH THOSE.
- #
- # NOTE TO HACKERS: TABSTOPS SET AT 4 IN THIS CODE
- #
- # USE AT YOUR OWN RISK. SEEMS TO WORK, BUT IT'S YOUR RESPONSIBILITY!
- # PLEASE TELL ME ABOUT BUGS AND FIXES: Jerry Peek, jerry@ora.com
-
- myname="`basename $0`"
-
- # GET SUBJECT OF THIS MESSAGE WITHOUT ANY Re: ON FRONT.
- # ESCAPE METACHARACTERS LIKE [, ], ETC.:
- if subj="`scan -width 300 -format '%{subject}' cur`"
- then
- subj=`echo "$subj" |
- sed -e '
- /^[Rr][Ee]:/ {
- :rezap
- s/^[Rr][Ee]: *//
- /^[Rr][Ee]:/b rezap
- }
- s/\*/\\\\*/g
- s/\./\\\\./g
- s/\\$/\\\\$/g
- s/\]/\\\\]/g
- s/\[/\\\\[/g'`
- else
- echo 1>&2 "$myname quitting: can't find subject of current message:
- $subj"
- exit 1
- fi
-
- for arg
- do
- case "$arg" in
- [+@]*)
- case "$gotfdr" in
- "") gotfdr=yes ;;
- *) echo "$myname quitting: '$arg': only one folder at a time!" 1>&2
- exit
- ;;
- esac
-
- # MAKE SURE FOLDER EXISTS SO folder WON'T ASK "create?" (GRRRR...):
- if [ -d `mhpath $arg` ]
- then
- if folder -push $arg > /dev/null
- then
- # SET trap TO POP FOLDER STACK:
- trap 'folder -pop >/dev/null; exit' 0
- trap 'echo $myname: Interrupt! Cleaning up...' 1 2 15
- else
- echo "$myname quitting: can't push folder $arg onto stack?" 1>&2
- exit 1
- fi
- else
- echo "$myname quitting: folder '${arg}' doesn't exist?"
- exit 1
- fi
- ;;
- *) range="$range $arg" ;;
- esac
- done
-
- # SEARCH FOR MESSAGE AND scan IF WE FOUND ANY. DEFAULT TO all MSGS IN FOLDER:
- if pick -subject "$subj" $range -seq picked
- then
- # THIS exitS WITH scan'S EXIT STATUS:
- scan picked
- exit
- else
- exit 1
- fi
-